﻿#define  _CRT_SECURE_NO_WARNINGS 1
//1. 求一元二次方程：ax的平方 + bx + c = 0的根。
//输入三个实数a, b, c的值，且a不等于0。
#include <math.h>

//int main()
//{
//	double a = 0;
//	double b = 0;
//	double c = 0;
//	double discriminant = 0;
//	double x1 = 0;
//	double x2 = 0;
//	printf("请你输入a，b，c的值（a≠0）: ");
//	scanf("%lf %lf %lf", &a, &b, &c);
//
//	// 计算判别式
//	discriminant = b * b - 4 * a * c;
//
//	// 数学判别式 
//	if (discriminant > 0)
//	{
//		// 两个不相等的根
//		x1 = (-b + sqrt(discriminant)) / (2 * a);
//		x2 = (-b - sqrt(discriminant)) / (2 * a);
//		printf("方程有两个不相等的实数根: x1=%.6f,x2=%.6f\n", x1, x2);
//	}
//	else if (discriminant == 0)
//	{
//		// 两个相等的根
//		x1 = x2 = -b / (2 * a);
//		printf("方程有两个相等的实数根:x1=x2=%.6f\n", x1);
//	}
//	else
//	{
//		// 两个共轭复根
//		double realPart = -b / (2 * a); // 实部
//		double imagPart = sqrt(-discriminant) / (2 * a); // 虚部
//		printf("方程有两个复数根: \n");
//		printf("x1=%.6f + %.6fi\n", realPart, imagPart);
//		printf("x2=%.6f - %.6fi\n", realPart, imagPart);
//	}
//	return 0;
//}




//2. 有1、2、3、4四个数字，能组成多少个互不相同且无重复数字的三位数？
//int main()
//{
//	int count = 0; // 计数符合条件的三位数
//	int i, j, k;// 分别代表百十个位
//
//	// 遍历所有可能的三位数组合（百十个位不相同）
//	for (i = 1; i <= 4; i++)
//	{
//		for (j = 1; j <= 4; j++)
//		{
//			if (j != i)  // 百十位不相同
//			{
//				for (k = 1; k <= 4; k++)
//				{
//					if (k != i && k != j)  // 个位和百位，十位均不同
//					{
//						count++;
//						printf("%d%d%d ", i, j, k);  // 输出该数
//					}
//				}
//			}
//		}
//	}
//	printf("\n能组成%d个互不相同且无重复数字的三位数\n", count);
//	return 0;
//}





//3. 打印出所有的"水仙花数"，所谓"水仙花数"是指一个三位数，其各位数字立方和等于该数本身。
//例如：153是一个"水仙花数"，因为153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 1 + 125 + 27。
#include <stdio.h>
#include <math.h>
//int main()
//{
//	int i = 0; // 存储所有的三位数
//	for (i = 100; i < 1000; i++)   // 先产生全部的三位数
//	{
//		int sum = 0; // 存储立方和
//		int temp = i; // 避免使用i的时候导致，i发生变化
//		while (temp)  // 如果为0就不在执行循环
//		{
//			int n = 0;
//			n = temp % 10;  // 得到最后一位
//			temp /= 10;  // 把已经得到的最后一位去掉
//			sum += (int)pow(n, 3);
//		}
//		if (sum == i)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}